{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "#导入必要的工具包\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.metrics import log_loss\n",
    "from sklearn.metrics import  accuracy_score\n",
    "from matplotlib import  pyplot \n",
    "import seaborn as sns\n",
    "%matplotlib inline\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Pregnancies</th>\n",
       "      <th>Glucose</th>\n",
       "      <th>BloodPressure</th>\n",
       "      <th>SkinThickness</th>\n",
       "      <th>Insulin</th>\n",
       "      <th>BMI</th>\n",
       "      <th>DiabetesPedigreeFunction</th>\n",
       "      <th>Age</th>\n",
       "      <th>Outcome</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>6</td>\n",
       "      <td>148.0</td>\n",
       "      <td>72.0</td>\n",
       "      <td>35.0</td>\n",
       "      <td>125.0</td>\n",
       "      <td>33.6</td>\n",
       "      <td>0.627</td>\n",
       "      <td>50</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>85.0</td>\n",
       "      <td>66.0</td>\n",
       "      <td>29.0</td>\n",
       "      <td>125.0</td>\n",
       "      <td>26.6</td>\n",
       "      <td>0.351</td>\n",
       "      <td>31</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>8</td>\n",
       "      <td>183.0</td>\n",
       "      <td>64.0</td>\n",
       "      <td>29.0</td>\n",
       "      <td>125.0</td>\n",
       "      <td>23.3</td>\n",
       "      <td>0.672</td>\n",
       "      <td>32</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>89.0</td>\n",
       "      <td>66.0</td>\n",
       "      <td>23.0</td>\n",
       "      <td>94.0</td>\n",
       "      <td>28.1</td>\n",
       "      <td>0.167</td>\n",
       "      <td>21</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>137.0</td>\n",
       "      <td>40.0</td>\n",
       "      <td>35.0</td>\n",
       "      <td>168.0</td>\n",
       "      <td>43.1</td>\n",
       "      <td>2.288</td>\n",
       "      <td>33</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Pregnancies  Glucose  BloodPressure  SkinThickness  Insulin   BMI  \\\n",
       "0            6    148.0           72.0           35.0    125.0  33.6   \n",
       "1            1     85.0           66.0           29.0    125.0  26.6   \n",
       "2            8    183.0           64.0           29.0    125.0  23.3   \n",
       "3            1     89.0           66.0           23.0     94.0  28.1   \n",
       "4            0    137.0           40.0           35.0    168.0  43.1   \n",
       "\n",
       "   DiabetesPedigreeFunction  Age  Outcome  \n",
       "0                     0.627   50        1  \n",
       "1                     0.351   31        0  \n",
       "2                     0.672   32        1  \n",
       "3                     0.167   21        0  \n",
       "4                     2.288   33        1  "
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#读取数据\n",
    "train = pd.read_csv(\"./new_diabetes.csv\")\n",
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Int64Index: 154 entries, 661 to 380\n",
      "Data columns (total 8 columns):\n",
      "Pregnancies                 154 non-null int64\n",
      "Glucose                     154 non-null float64\n",
      "BloodPressure               154 non-null float64\n",
      "SkinThickness               154 non-null float64\n",
      "Insulin                     154 non-null float64\n",
      "BMI                         154 non-null float64\n",
      "DiabetesPedigreeFunction    154 non-null float64\n",
      "Age                         154 non-null int64\n",
      "dtypes: float64(6), int64(2)\n",
      "memory usage: 10.8 KB\n"
     ]
    }
   ],
   "source": [
    "# 从原始数据中分离输入特征x和输出y\n",
    "y = train['Outcome'].values\n",
    "X = train.drop('Outcome', axis = 1)\n",
    "\n",
    "#用于后续显示权重系数对应的特征\n",
    "columns = X.columns\n",
    "\n",
    "#将数据分割训练数据与测试数据\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "# 随机采样20%的数据构建测试样本，其余作为训练样本\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0, test_size=0.2)\n",
    "X_train.shape\n",
    "\n",
    "\n",
    "X_test.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "#数据标准化\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "\n",
    "ss_X = StandardScaler()\n",
    "\n",
    "X_train = ss_X.fit_transform(X_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.758957654723127\n",
      "{'C': 10}\n"
     ]
    }
   ],
   "source": [
    "#线性SVM\n",
    "from sklearn.svm import SVC\n",
    "from sklearn.model_selection import  GridSearchCV\n",
    "\n",
    "Cs = [0.001,0.01,0.1,1,10,100,1000]\n",
    "parameters = {'C':Cs}\n",
    "grid = GridSearchCV(SVC(kernel='linear'),parameters,cv=5)\n",
    "grid.fit(X_train,y_train)\n",
    "print(grid.best_score_)\n",
    "print(grid.best_params_)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 线性SVM与Logistic回归性能对比\n",
    "\n",
    "性能对比：\n",
    "线性SVM模型在训练集上的性能为：0.758957654723127\n",
    "Logistic回归模型在训练集上的性能为：0.760586319218241\n",
    "结论：线性SVM模型在训练集上的性能比Logistic回归模型好。\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.760586319218241\n",
      "{'C': 100, 'gamma': 0.001}\n"
     ]
    }
   ],
   "source": [
    "#RBF核的SVM\n",
    "from sklearn.svm import SVC\n",
    "from sklearn.model_selection import  GridSearchCV\n",
    "\n",
    "Cs = [0.001,0.01,0.1,1,10,100,1000]\n",
    "gammas = [0.0001,0.001,0.01,0.1,1]\n",
    "param_grid = {'C':Cs,'gamma':gammas}\n",
    "grid = GridSearchCV(SVC(kernel='rbf'),param_grid,cv=5)\n",
    "grid.fit(X_train,y_train)\n",
    "print(grid.best_score_)\n",
    "print(grid.best_params_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot CV误差曲线\n",
    "test_means = grid.cv_results_['mean_test_score']\n",
    "test_stds = grid.cv_results_['std_test_score']\n",
    "# plot results\n",
    "n_Cs = len(Cs)\n",
    "number_gamms = len(gammas)\n",
    "test_scores = np.array(test_means).reshape(n_Cs,number_gamms)\n",
    "test_stds = np.array(test_stds).reshape(n_Cs,number_gamms)\n",
    "\n",
    "x_axis = np.log10(Cs)\n",
    "for i,value in enumerate(gammas):\n",
    "    pyplot.errorbar(x_axis, test_scores[:,i],label=gammas[i])\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel('log(C)')\n",
    "pyplot.ylabel('accuracy')\n",
    "pyplot.savefig('SVMGridSearchCV_C.png')\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
